package uebungsblatt07.aufgabe13c;

public enum State implements Events
{
	POLITISCH_AKTIV
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
			p.removeAllStates();
		}
	},

	REBELLISCH
	{
		public void parteilob(Politiker p)
		{
			p.addState(State.LOYAL);
			p.removeState(State.REBELLISCH);
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	LOYAL
	{
		public void parteilob(Politiker p)
		{
			p.addState(State.KRIECHEND);
			p.removeState(State.LOYAL);
		}

		public void parteitadel(Politiker p)
		{
			p.addState(State.REBELLISCH);
			p.removeState(State.LOYAL);
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	KRIECHEND
	{
		public void parteilob(Politiker p)
		{
			p.addState(State.KRIECHEND);
			p.removeState(State.KRIECHEND);
			p.wirtschaftskritik();
		}

		public void parteitadel(Politiker p)
		{
			p.addState(State.REBELLISCH);
			p.removeState(State.KRIECHEND);
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	HOERIG
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
			p.addState(State.AUFSICHTSRAT);
			p.removeState(State.POLITISCH_AKTIV);
			p.removeState(State.PROTEGIERT);
			p.removeState(State.HOERIG);
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	ERGEBEN
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
			p.addState(State.HOERIG);
			p.removeState(State.ERGEBEN);
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	REHABILITIERT
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
			p.addState(State.ERGEBEN);
			p.removeState(State.REHABILITIERT);
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	NEUTRAL
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
			p.addState(State.REHABILITIERT);
			p.addState(State.PROTEGIERT);
			p.removeState(State.NEUTRAL);
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
		}
	},

	PROTEGIERT
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
			p.removeState(State.HOERIG);
			p.removeState(State.ERGEBEN);
			p.removeState(State.REHABILITIERT);
			p.addState(State.NEUTRAL);
		}

		public void erwischt(Politiker p)
		{
		}
	},

	AUFSICHTSRAT
	{
		public void parteilob(Politiker p)
		{
		}

		public void parteitadel(Politiker p)
		{
		}

		public void wirtschaftslob(Politiker p)
		{
		}
		
		public void wirtschaftskritik(Politiker p)
		{
		}

		public void erwischt(Politiker p)
		{
			p.removeAllStates();
		}
	}
}
